home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / MM2_DEV / S / MOS / TIMECONV.D < prev    next >
Encoding:
Modula Definition  |  1989-09-20  |  4.4 KB  |  110 lines

  1. DEFINITION MODULE TimeConvert;
  2.  
  3. (*
  4.  * Umwandlung von Datums- und Zeitangaben in Strings und umgekehrt.
  5.  * Geeignet auch für GEM-Ein-/Ausgabemasken.
  6.  *)
  7.  
  8. FROM MOSGlobals IMPORT Time, Date;
  9.  
  10.  
  11. PROCEDURE TimeToText ( s: Time; REF mask: ARRAY OF CHAR; VAR t: ARRAY OF CHAR );
  12.   (*
  13.    * Wandelt die Zeit 's' in den String 't'.
  14.    * 't' muß mindestens so groß wie die übergebene Maske sein, sonst
  15.    * tritt ein Laufzeitfehler auf! (Empfohlen werden mind. 12 Zeichen!)
  16.    *
  17.    * Die Form wird durch 'mask' bestimmt:
  18.    *
  19.    *   HH: Stundenzahl ("hh" löscht führende Null)
  20.    *   MM: Minutenzahl ("mm" löscht führende Null)
  21.    *   SS: Sekundenzahl ("ss" löscht führende Null)
  22.    *
  23.    *   #E: AM/PM-Notierung (English) ("e" schreibt "am" bzw. "pm")
  24.    *
  25.    *   Beispiele für:            >13 Uhr 50, 5s<     >2 Uhr 50, 10s<
  26.    *    'hh:mm:ss'                '13:50:5'           '2:50:10'
  27.    *    'HH:MM:SS'                '13:50:05'          '02:50:10'
  28.    *    'hh:MM:SS'                '13:50:05'          '2:50:10'
  29.    *    'hh:MM #e'                '1:50 pm'           '2:50 am'
  30.    *    'hh Uhr mm'               '13 Uhr 5'          '2 Uhr 10'
  31.    *
  32.    *   Für GEM-Ausgabemasken kann z.B. "HHMMSS" übergeben werden (s. Modul
  33.    *   'Timer' im UTILITY-Ordner).
  34.    *
  35.    * Ist 'mask' ein Leerstring, wird 'StdTimeMask' (in 'MOSConfig') verwendet.
  36.    *)
  37.  
  38. PROCEDURE DateToText ( s: Date; REF mask: ARRAY OF CHAR; VAR d: ARRAY OF CHAR );
  39.   (*
  40.    * Wandelt Datum 's' in String 'd'.
  41.    * 'd' muß mindestens so groß wie die übergebene Maske sein, sonst
  42.    * tritt ein Laufzeitfehler auf! (Empfohlen werden mind. 12 Zeichen!)
  43.    *
  44.    * Die Form wird durch 'mask' bestimmt:
  45.    *
  46.    *   D: Tagesziffer  (d: wird gelöscht, wenn nicht auffüllbar)
  47.    *   Y: Jahresziffer (y: wird gelöscht, wenn nicht auffüllbar)
  48.    *   M: Monatsziffer (m: wird gelöscht, wenn nicht auffüllbar)
  49.    *   G: Monatsbuchstabe Deutsch
  50.    *   F: Monatsbuchstabe Fränzösisch
  51.    *   E: Monatsbuchstabe English
  52.    *   U: Benutzerdefinierter Monatsbuchstabe (s. 'MOSConfig.NameOfMonth')
  53.    *   #E (Hinter Ziffern): s. Bsp. (#G, #F gehen z.Zt. nicht !)
  54.    *
  55.    *   Beispiele für:                >13.5.1988<          >1.9.2002<
  56.    *   'DD.MM.YY'                ->  '13.05.88'           '01.09.02'
  57.    *   'mm-dd-yy'                ->  '5-13-88'            '9-1-2'
  58.    *   'dd. GGG yyyy'            ->  '13. Mai 1988'       '1. Sep 2002'
  59.    *   'yyyy, d#E of EEEEEEEEE'  ->  '1988, 13th of May'  '2002, 1st of September'
  60.    *   'GGGGGGGGGGGG'            ->  'Mai'                'September'
  61.    *
  62.    *   Für GEM-Ausgabemasken kann z.B. "DDMMYY" übergeben werden (s. Modul
  63.    *   'Timer' im UTILITY-Ordner).
  64.    *
  65.    * Ist 'mask' ein Leerstring, wird 'StdDateMask' (in 'MOSConfig') verwendet.
  66.    *)
  67.  
  68. PROCEDURE TextToTime ( s: ARRAY OF CHAR; VAR d: Time; VAR valid: BOOLEAN );
  69.   (*
  70.    * Wandelt den Text 's' in die Zeit 't'.
  71.    * 'valid' liefert TRUE, wenn die Zeitangabe gültig war.
  72.    * Im Text 's' müssen die Stunden, Minuten und Sekunden (optional) durch
  73.    * ein Satzzeichen o.ä. (keine Ziffern oder Buchstaben) getrennt sein.
  74.    *
  75.    * Beispiele:
  76.    *  '13:30'  ->  13h 30m 0s  valid=TRUE
  77.    *  '1530'   ->  15h 30m 0s  valid=TRUE
  78.    *  '010203' ->  1h 2m 3s    valid=TRUE  (für GEM-Eingabemasken!)
  79.    *  '15000'  ->  15h 0m 0s   valid=TRUE  (und nicht etwa 1h 0m 0s!)
  80.    *  '1 5.30' ->  1h 5m 30s   valid=TRUE
  81.    *  '24.00'  ->  0h 0m 0s    valid=FALSE (Werte müssen zw. 0 und 23/59 liegen)
  82.    *  '1pm'    ->  1h          valid=FALSE (String darf sonst nix enthalten)
  83.    *)
  84.  
  85. PROCEDURE TextToDate ( s: ARRAY OF CHAR; exp: CARDINAL;
  86.                        VAR d: Date; VAR valid: BOOLEAN );
  87.   (*
  88.    * Wandelt Text 's' in das Datum 'd'.
  89.    *
  90.    * 'valid' liefert TRUE, wenn die Datumsangabe gültig war, dabei werden
  91.    * auch Daten wie der 30.2, der 31.4 oder der 29.2 in Nicht-Schaltjahren
  92.    * (nach gregorianischem Kalender) zurückgewiesen.
  93.    * Dazu gehört auch, daß nach der gültigen Datumsangabe keine weiteren
  94.    * Zeichen folgen.
  95.    *
  96.    * Strings, wie "010490" werden auch korrekt ausgewertet, solange die
  97.    * Reihenfolge mit 'exp' übereinstimmt. Dies ist besonders nützlich
  98.    * zum Auswerten von GEM-Eingabemasken für das Daum (s. Modul 'Timer'
  99.    * im UTILITY-Ordner).
  100.    *
  101.    * 'exp' bestimmt die zu erwartende Form des Datums:
  102.    *   1: t-m-j
  103.    *   2: m-t-j
  104.    *   3: j-m-t
  105.    *   4: j-t-m
  106.    * Ist 'exp' Null, wird 'StdDateExp' (in 'MOSConfig') verwendet.
  107.    *)
  108.  
  109. END TimeConvert.
  110.